package cn.iocoder.yudao.module.exam.controller.admin.paper.vo;

import cn.iocoder.yudao.module.exam.controller.admin.question.vo.QuestionRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;
import java.util.*;
import javax.validation.constraints.*;

@Schema(description = "管理后台 - 试卷新增/修改 Request VO")
@Data
public class PaperSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30122")
    private Long id;

    @Schema(description = "试卷名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @NotEmpty(message = "试卷名称不能为空")
    private String paperName;

    @Schema(description = "考试时长（分钟）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "考试时长（分钟）不能为空")
    private Integer duration;


    @Schema(description = "试卷类型 1随机试卷 0固定出题", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "试卷类型 1随机试卷 0固定出题不能为空")
    private Integer paperType;

    @Schema(description = "单选题数量")
    private Integer singleChoiceNum;

    @Schema(description = "多选题数量")
    private Integer multipleChoiceNum;

    @Schema(description = "判断题数量")
    private Integer trueFalseNum;

    @Schema(description = "简答题数量")
    private Integer shortAnswerNum;

    @Schema(description = "问答题数量")
    private Integer essayNum;

    @Schema(description = "简答题数量")
    private Integer fillNum;

    @Schema(description = "问答题数量")
    private Integer calculateNum;

    @Schema(description = "单选题分值")
    private BigDecimal singleChoiceScore;

    @Schema(description = "多选题不全选分值")
    private BigDecimal multipleChoicePartialScore;

    @Schema(description = "多选题全对分值")
    private BigDecimal multipleChoiceFullScore;

    @Schema(description = "判断题分值")
    private BigDecimal trueFalseScore;


    @Schema(description = "单选题总分分值")
    private BigDecimal singleChoiceTotalScore;

    @Schema(description = "多选题总分值")
    private BigDecimal multipleChoiceTotalScore;

    @Schema(description = "判断题总分值")
    private BigDecimal trueFalseTotalScore;

    @Schema(description = "填空题总分值")
    private BigDecimal fillTotalScore;

    @Schema(description = "简答题总分值")
    private BigDecimal shortAnswerTotalScore;

    @Schema(description = "问答题总分值")
    private BigDecimal essayTotalScore;

    @Schema(description = "计算题总分值")
    private BigDecimal calculateTotalScore;


    @Schema(description = "简单题目数量")
    private Integer easyNum;
    @Schema(description = "一般题目数量")
    private Integer commonNum;
    @Schema(description = "中等题目数量")
    private Integer mediumNum;
    @Schema(description = "困难题目数量")
    private Integer difficultNum;
    @Schema(description = "级难题目数量")
    private Integer extremelyDifficultNum;

    @Schema(description = "简单分值")
    private BigDecimal easyTotalScore;
    @Schema(description = "一般分值")
    private BigDecimal commonTotalScore;
    @Schema(description = "中等分值")
    private BigDecimal mediumTotalScore;
    @Schema(description = "困难分值")
    private BigDecimal difficultTotalScore;
    @Schema(description = "级难分值")
    private BigDecimal extremelyDifficultTotalScore;

    @Schema(description = "试卷总分", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "试卷总分不能为空")
    private Integer totalScore;

    @Schema(description = "及格线", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "及格线不能为空")
    private Integer passingScore;
    @Schema(description = "题目集合")
    private List<QuestionRespVO> selectQuestionList;

}